// UserService.java
package com.example.demo.mapper;

import com.example.demo.model.User;
import com.example.demo.vo.UserBriefVo;
import com.example.demo.vo.UserInfoLogVo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {
    //    不通过xml方式，直接写sql
//    @Insert("INSERT INTO users (name) VALUES (#{name})")
//    @Options(useGeneratedKeys = true, keyProperty = "id")
    User getUserByNamePass(@Param("username") String username, @Param("password") String password);

    void insertUser(User user);

    //    @Select("SELECT * FROM users")
    List<User> getAllUsers();

    UserInfoLogVo getUserInfo(@Param("userId") Long userId);

    //    这里也可以通过注解@param,也可以直接指定一个对象类型
    User getUserById(Long id);

    void updateUser(User user);

    void deleteUser(@Param("id") Long id);

//    当涉及多表查询时，可以通过定义Map来获取，避免定义一个自定义类来结合多表涉及的结合类
//List<Map<String, Object>> userOrders = userMapper.getUserOrdersAsMap();

}